package com.culture.config.common.util;

import java.net.InetAddress;
import java.util.Objects;

import javax.servlet.http.HttpServletRequest;

import lombok.experimental.UtilityClass;

@UtilityClass
public class HostAddressUtil {
	
	public static String getClientIpAddress(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if(ip == null || ip.length() == 0 || "unknow".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (ip == null || ip.length () == 0 || "unknown".equalsIgnoreCase (ip)) {
	        ip = request.getHeader ("WL-Proxy-Client-IP");
	    }
		if (ip == null || ip.length () == 0 || "unknown".equalsIgnoreCase (ip)) {
	        ip = request.getRemoteAddr ();
	        if (ip.equals ("127.0.0.1")) {		            
	            InetAddress inet = null;
	            try {
	                inet = InetAddress.getLocalHost ();
	            } catch (Exception e) {
	                e.printStackTrace ();
	            }
				if(Objects.nonNull(inet)){
					ip = inet.getHostAddress ();
				}	            
	        }
	    }	 	
	    if (ip != null && ip.length () > 15) {
			int index = ip.indexOf (",");
	        if (index > 0) {
	            ip = ip.substring (0,index);
	        }
	    }
	    return ip;		
	}
}
